package com.itheima;

public class ThreadLocalExample {
    // 创建一个 ThreadLocal 变量
    private static ThreadLocal<String> userInfo = new ThreadLocal<>();
    
    public static void main(String[] args) {
        // 创建并启动两个线程
        Thread thread1 = new Thread(() -> {
            // 设置当前线程的本地变量
            userInfo.set("User-Thread-1");
            // 获取当前线程的本地变量
            System.out.println("Thread 1: " + userInfo.get());
            // 使用完后清理，防止内存泄露
            userInfo.remove();
        });
        
        Thread thread2 = new Thread(() -> {
            // 设置当前线程的本地变量
            userInfo.set("User-Thread-2");
            // 获取当前线程的本地变量
            System.out.println("Thread 2: " + userInfo.get());
            // 使用完后清理，防止内存泄露
            userInfo.remove();
        });
        
        thread1.start();
        thread2.start();
        
        try {
            thread1.join();
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        // 主线程中获取，应该是 null
        System.out.println("Main thread: " + userInfo.get());
    }
}